A base de dados escolhida foi “NASA Astronauts, do kaggle 1959-Present”. É a mesma base que a Mariana já tinha trabalhado em exercícios anteriores. Optamos por trabalhar com essa base pois achamos o assunto muito interessante e já tinhamos familiaridade com os dados.
Esse conjunto de dados foi publicado pela ‘National Aeronautics and Space Administration’ como “Astronaut Fact Book” (edição de abril de 2013). Os nomes das missões dos astronautas ativos e as estatísticas de voo foram atualizados no site da NASA. Pode ser acessado em: https://www.kaggle.com/datasets/nasa/astronaut-yearbook.
A pergunta a ser respondida a partir dos dados é: “COMO SÃO OS ASTRONAUTAS?”.
Quais são as características mais recorrentes em astronautas da Nasa?
Questões como: Quanto tempo a maioria dos astronautas passou no espaço? Qual o curso que a maioria dos astronautas se formou? Houveram mais astronautas civis ou que serviram nas forças armadas? Qual a proporoção de astronautas mulheres para homens?
Esses e outros questionamentos serão respondidos pelo gráfico que representa os dados sobre os Astronautas que fizeram parte da equipe da Nasa.
Referência visual:
Durante a pesquisa, foi encontrada uma visualição muito interessante sobre astronautas que nos chamou muito a atenção. Essa, nos serviu como refência e inspiração para a produção de nossa peça gráfica.
A referência pode ser encontrada no site: https://www.behance.net/gallery/86241381/Data-Visualisation-What-it-takes-to-go-to-space?tracking_source=search_projects_recommended%7Cdata%20journalism%20%26
Outras inspirações:
https://www.reddit.com/r/DataArt/
https://www.reddit.com/r/DataArt/comments/10n0w11/oc_ukraine_aid_packages_visualized/
A ideia inicial era seguir a mesma linha e fazer um gráfico Sankey parecido, adicionando algumas alterações que julgamos necessárias, adaptando alguns pontos e adicionando elementos para compor a ideia.
## [1] "LC_COLLATE=pt_br.utf-8;LC_CTYPE=pt_br.utf-8;LC_MONETARY=pt_br.utf-8;LC_NUMERIC=C;LC_TIME=pt_br.utf-8"
if(!require(tidyverse)) install.packages("tidyverse")
if(!require(ggthemes)) install.packages("ggthemes")
if(!require(ggplot2)) install.packages("ggplot2")
if(!require(tidyverse)) install.packages("tidyverse")
if(!require(dplyr)) install.packages("dplyr")
if(!require(ggsankey)) install.packages("ggsankey")
if(!require(stringr)) install.packages("stringr")
if(!require(remotes)) install.packages("remotes")
remotes::install_github("davidsjoberg/ggsankey")Para a produção do gráfico tivemos um grande problema com algumas colunas de dados, pela maneira como as informações estavam dispostas. Por isso tivemos que manipular um pouco, de maneira a arrumar e deixar os dados próprios para o gráfico Sankey.
Primeiramente, uma das informções presentes nos dados era a cidade de nascimento dos astronautas. Para utilizar esse dado, criamos uma nova coluna chamada ‘Country’, apenas os países de nascimento, para diminuir o número de variáveis.
states<-c("AL","AK","AZ","AR","CA","CO","CT","DE","FL","GA","HI","ID","IL","IN","IA","KS","KY","LA","ME","MD","MA","MI","MN","MS","MO","MT","NE","NV","NH","NJ","NM","NY","NC","ND","OH","OK","OR","PA","RI","SC","SD","TN","TX","UT","VT","VA","WA","WV","WI","WY","Richfield. UT","DC")
birth.place1<-gsub('(.*, )|(\\*. )', '', astronauts$Birth.Place)
astronauts$Country <-birth.place1
astronauts$Country[birth.place1 %in% states]<-"USA"
astronauts$Country <- as.factor(astronauts$Country)O próximo feito foi preencher os dados vázios da variável que representava o cargo militar dos astronautas, para isso colocamos como ‘civil’, os que não tinham cargo militar.
Alguns astronautas estavam preenchidos na coluna de pós-graduação, mas não estavam preenchidos na coluna de gradução. Por isso, completamos esse dados faltante como o mesmo curso da pós-graduação, porque se tem pós, tem que ter graduação.
astronauts$Undergraduate.Major[astronauts$Undergraduate.Major==""] = astronauts$Graduate.Major[astronauts$Undergraduate.Major==""]Para diminuir o número de variáveis no campo de formação dos astronautas, nós criamos uma nova coluna chamada ‘study’, onde preenchemos apenas com o primeiro curso.
# Separando em colunas as formações distintas
dfmajor <- str_split_fixed(astronauts$Graduate.Major, ';',2)
dfmajor <- data.frame(dfmajor)
# Criando a nova coluna
astronauts$Study <- c(dfmajor$X1)E as células que estavam vazias na graduação, colocamos ‘no graduation’.
Exibindo as formações presentes na coluna:
## [1] "Aeronautical & Astronautical Engineering"
## [2] "Aeronautical Engineering"
## [3] "Aeronautical Engineering Systems"
## [4] "Aeronautical Science"
## [5] "Aeronautical Systems"
## [6] "Aeronautics"
## [7] "Aeronautics & Astronautics"
## [8] "Aerospace Engineering"
## [9] "Aerospace Engineering Sciences"
## [10] "Aerospace Science"
## [11] "Applied Mathematics"
## [12] "Applied Physics"
## [13] "Applied Plasma Physics"
## [14] "Applied Science"
## [15] "Astrogeophysics"
## [16] "Astronautical & Aeronautical Engineering"
## [17] "Astronautical Engineering"
## [18] "Astronautics"
## [19] "Astronomy"
## [20] "Astronomy & Astrophysics"
## [21] "Atmospheric Physics"
## [22] "Aviation Systems"
## [23] "Biochemistry"
## [24] "Bioengineering"
## [25] "Biometeorology"
## [26] "Business Administration"
## [27] "Business Management"
## [28] "Cancer Biology"
## [29] "Ceramic Engineering"
## [30] "Chemical Engineering"
## [31] "Chemistry"
## [32] "Computer Science"
## [33] "Computer Systems"
## [34] "Earth & Planetary Sciences"
## [35] "Earth Sciences"
## [36] "Education"
## [37] "Electrical & Computer Engineering"
## [38] "Electrical Engineering"
## [39] "Electronics Engineering"
## [40] "Engineering"
## [41] "Engineering Management"
## [42] "Engineering Mechanics"
## [43] "Engineering Physics"
## [44] "Engineering Science"
## [45] "Environmental Science"
## [46] "Flight Structures Engineering"
## [47] "Geology"
## [48] "Geophysics"
## [49] "Geosciences"
## [50] "Hydraulic Engineering"
## [51] "Industrial Engineering"
## [52] "Information Systems"
## [53] "International Relations"
## [54] "Laboratory Astrophysics"
## [55] "Law"
## [56] "Materials Science"
## [57] "Materials Science Engineering"
## [58] "Mathematics"
## [59] "Mechanical Engineering"
## [60] "Mechanical & Aerospace Engineering"
## [61] "Mechanical Engineering"
## [62] "Medicine"
## [63] "Metallurgical Engineering"
## [64] "Meteorology"
## [65] "Microbial Ecology"
## [66] "No graduation"
## [67] "Nuclear Engineering"
## [68] "Nuclear Physics"
## [69] "Ocean Engineering"
## [70] "Oceanography"
## [71] "Operations Research"
## [72] "Physical Chemistry"
## [73] "Physical Science"
## [74] "Physics"
## [75] "Physiology"
## [76] "Planetary Science"
## [77] "Polymer Science & Engineering"
## [78] "Public Administration"
## [79] "Public Health"
## [80] "Safety Engineering"
## [81] "Science & Technology Administration"
## [82] "Solar Physics"
## [83] "Solid State Physics"
## [84] "Space Physics"
## [85] "Space Technology"
## [86] "Systems Engineering"
## [87] "Systems Management"
## [88] "Technology & Policy"
## [89] "Veterinary Medicine"
POr último, renomeamos os curso de maneira a deixar apenas a área geral de estudo, para diminuir o número de correspondências no gráfico. Por exemplo, os vários ramos da física foram resumidos apenas em física.
astronauts$Study[astronauts$Study=="Aeronautical & Astronautical Engineering"]="Aeronautics"
astronauts$Study[astronauts$Study=="Aeronautical Engineering Systems"]="Aeronautics"
astronauts$Study[astronauts$Study=="Aeronautical System"]="Aeronautics"
astronauts$Study[astronauts$Study=="Aeronautical Systems"]="Aeronautics"
astronauts$Study[astronauts$Study=="Aeronautics & Astronautics"]="Aeronautics"
astronauts$Study[astronauts$Study=="Aeronautical Engineering"]="Aeronautics"
astronauts$Study[astronauts$Study=="Aeronautical Science"]="Aeronautics"
astronauts$Study[astronauts$Study=="Applied Plasma Physics"]="Physics"
astronauts$Study[astronauts$Study=="Atmospheric Physics"]="Physics"
astronauts$Study[astronauts$Study=="Engineering Physics"]="Physics"
astronauts$Study[astronauts$Study=="Physical Science"]="Physics"
astronauts$Study[astronauts$Study=="Solid State Physics"]="Physics"
astronauts$Study[astronauts$Study=="Applied Physics"]="Physics"
astronauts$Study[astronauts$Study=="Solar Physics"]="Physics"
astronauts$Study[astronauts$Study=="Physical Chemistry"]="Physics"
astronauts$Study[astronauts$Study=="Space Physics"]="Physics"
astronauts$Study[astronauts$Study=="Nuclear Physics"]="Physics"
astronauts$Study[astronauts$Study=="Mechanical Engineering"]="Mechanical Engineering"
astronauts$Study[astronauts$Study=="Engineering Mechanics"]="Mechanical Engineering"
astronauts$Study[astronauts$Study=="Earth & Planetary Sciences"]="Earth Sciences"
astronauts$Study[astronauts$Study=="Planetary Science"]="Earth Sciences"
astronauts$Study[astronauts$Study=="Applied Mathematics"]="Mathematics"
astronauts$Study[astronauts$Study=="Astronomy & Astrophysics"]="Astronomy"
astronauts$Study[astronauts$Study=="Aerospace Engineering Sciences"]="Aerospace"
astronauts$Study[astronauts$Study=="Aerospace Engineering"]="Aerospace"
astronauts$Study[astronauts$Study=="Mechanical & Aerospace Engineering"]="Aerospace"
astronauts$Study[astronauts$Study=="Astronomy & Astrophysics"]="Aerospace"
astronauts$Study[astronauts$Study=="Aerospace Science"]="Aerospace"
astronauts$Study[astronauts$Study=="Astronautical & Aeronautical Engineering"]="Astronautics"
astronauts$Study[astronauts$Study=="Astronautical Engineering"]="Astronautics"
astronauts$Study[astronauts$Study=="Electrical & Computer Engineering"]="Electrical Engineering"
astronauts$Study[astronauts$Study=="Computer Systems"]="Computer Science"
astronauts$Study[astronauts$Study=="Biometeorology"]="Meteorology"
astronauts$Study[astronauts$Study=="Technology & Policy"]="Technology"
astronauts$Study[astronauts$Study=="Space Technology"]="Technology"
astronauts$Study[astronauts$Study=="Science & Technology Administration"]="Administration"
astronauts$Study[astronauts$Study=="Public Administration"]="Administration"
astronauts$Study[astronauts$Study=="Systems Engineering"]="Systems Management"
astronauts$Study[astronauts$Study=="Information Systems"]="Systems Management"
astronauts$Study[astronauts$Study=="Business Administration"]="Business"
astronauts$Study[astronauts$Study=="Business Management"]="Business"
astronauts$Study[astronauts$Study=="Bioengineering"]="Biology"
astronauts$Study[astronauts$Study=="Cancer Biology"]="Biology"
astronauts$Study[astronauts$Study=="Biochemistry"]="Biology"
astronauts$Study[astronauts$Study=="Materials Science Engineering"]="Applied Science"
astronauts$Study[astronauts$Study=="Engineering Science"]="Applied Science"
astronauts$Study[astronauts$Study=="Materials Science"]="Applied Science"
astronauts$Study[astronauts$Study=="Environmental Science"]="Applied Science"
astronauts$Study[astronauts$Study=="Polymer Science & Engineering"]="Applied Science"
astronauts$Study[astronauts$Study=="Engineering Management"]="Engineering"
astronauts$Study[astronauts$Study=="Ocean Engineering"]="Oceanography"
astronauts$Study[astronauts$Study=="Chemical Engineering"]="Chemistry"## Name Year Group Status
## Length:357 Min. :1959 Min. : 1.00 Length:357
## Class :character 1st Qu.:1978 1st Qu.: 8.00 Class :character
## Mode :character Median :1987 Median :12.00 Mode :character
## Mean :1985 Mean :11.41
## 3rd Qu.:1996 3rd Qu.:16.00
## Max. :2009 Max. :20.00
## NA's :27 NA's :27
## Birth.Date Birth.Place Gender Alma.Mater
## Length:357 Length:357 Length:357 Length:357
## Class :character Class :character Class :character Class :character
## Mode :character Mode :character Mode :character Mode :character
##
##
##
##
## Undergraduate.Major Graduate.Major Military.Rank Military.Branch
## Length:357 Length:357 Length:357 Length:357
## Class :character Class :character Class :character Class :character
## Mode :character Mode :character Mode :character Mode :character
##
##
##
##
## Space.Flights Space.Flight..hr. Space.Walks Space.Walks..hr.
## Min. :0.000 Min. : 0 Min. : 0.000 Min. : 0.000
## 1st Qu.:1.000 1st Qu.: 289 1st Qu.: 0.000 1st Qu.: 0.000
## Median :2.000 Median : 590 Median : 0.000 Median : 0.000
## Mean :2.364 Mean : 1249 Mean : 1.246 Mean : 7.707
## 3rd Qu.:3.000 3rd Qu.: 1045 3rd Qu.: 2.000 3rd Qu.:12.000
## Max. :7.000 Max. :12818 Max. :10.000 Max. :67.000
##
## Missions Death.Date Death.Mission Country
## Length:357 Length:357 Length:357 USA :335
## Class :character Class :character Class :character England : 4
## Mode :character Mode :character Mode :character Australia: 3
## China : 2
## Argentina: 1
## Canada : 1
## (Other) : 11
## Study
## Length:357
## Class :character
## Mode :character
##
##
##
##
graf <- ggplot(data= astronauts,
mapping = aes(x=Country)) + geom_bar(aes(fill = "red")) + coord_flip() + guides(fill = FALSE)
grafgraf <- ggplot(data= astronauts,
mapping = aes(x= Military.Rank)) + geom_bar(aes(fill = Gender)) + coord_flip()
graf## [1] 2.364146
## [1] 0
## [1] 7
## [1] 2
## 0% 25% 50% 75% 100%
## 0 1 2 3 7
## [1] 2.041183
## [1] 1.4287
graf <- ggplot(data= astronauts,
mapping = aes(x= Space.Flights)) + geom_bar(aes(fill= Country))
grafgraf <- ggplot(data= astronauts,
mapping = aes(x= Study)) + geom_bar(aes(fill = Country)) + coord_flip()
grafgraf <- ggplot(data= astronauts,
mapping = aes(x= Study)) + geom_bar(aes(fill = Gender, angle=90)) + coord_flip()
grafgraf <- ggplot(data= astronauts,
mapping = aes(x= Space.Flights, y = Country, color = Gender)) + geom_point() + geom_jitter(position = position_jitter(width = 0.5))
grafgraf <- ggplot(data= astronauts,
mapping = aes(x= Military.Rank, y = Country, color = Country)) + geom_point() +
theme(axis.text.x = element_text(size = 10, angle = 90)) + geom_jitter(position = position_jitter(width = 0.5))
grafs1 <- sample(x= c("Single",
"Married",
"Married with kids",
"Married Without kids"),
size = 100,
replace=TRUE)
s2 <- sample(x= c("Male",
"Female"),
size = 100,
replace=TRUE)
s3 <- sample(x= c("Happy",
"Not Happy"),
size = 100,
replace=TRUE)
d <- data.frame(cbind(s1,s2,s3))
names(d) <- c('Relationship',
'Gender',
'Outcome')
df <- d%>%
make_long(Relationship,
Gender,
Outcome)pl <- ggplot(df, aes(x = x,
next_x = next_x,
node = node,
next_node = next_node,
fill = factor(node)))
pl <- pl +geom_sankey(flow.alpha = 0.5,
node.color = "black",
show.legend = TRUE)
plO público alvo é o público em geral interessado em curiosidades científicas e que queira entender melhor como é a maioria dos astronautas da Nasa.
A peça gráfica foi feita com o objetivo de ser criativa e representar o contexto dos dados na forma do gráfico. Para isso utilizamos do gráfico Sankey, com o intuito de referenciar um foguete espacial, o que também explica o uso das cores e elementos de contexto ao redor.
Para a produção da peça gráfica, fizemos uso do R para a confecção do gráfico (ggplot2, ggsankey) e manipulação dos dados(dplyr, stringr), juntamente com o excel para auxiliar o entendimento e visualização da tabela e, por fim, usamos o Canva para adição dos demais elementos.
Durante o processo encontramos um grande desafio, pela maneira como estava disposta as duas colunas sobre as formações dos astronautas. Essa variável apresentava todos os cursos que cada astronauta possui, separada por ponto e vírgula, o que impossibilitava plotar o gráfico que queriamos diretamente com essa informação. No processo tivemos que arrumar isso, como está descrito passo a passo na parte B, o que gerou grande aprendizado, além do conhecimento de um novo gráfico diferente e como produzi-lo com as ferramentas do R.
cbPalette <- c("#4038C9", "#657CFF", "#71BBCC", "#DB5C18")
pl <- ggplot(df, aes(x = x,
next_x = next_x,
node = node,
next_node = next_node,
fill = next_x,
label = node)) +
geom_sankey(flow.alpha = 0.5, show.legend = FALSE, node.alpha = 0.7) +
theme_sankey(base_size = 150) +
theme(legend.position = "none") +
geom_sankey_text(size = 20, hjust = 0,angle = 15, color = "white", position = position_nudge(x = 0.1)) +
scale_fill_manual(values = cbPalette) +
theme(panel.background = element_rect(fill = "#080833"))
pl